perm filename ARKMAC.TEX[TEX,RWF] blob sn#511885 filedate 1980-09-19 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00015 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	% codes and definitions
C00006 00003	% Font definitions and related macros
C00011 00004	% \output and footnotes
C00015 00005	% macro, for return, esc, bs, control characters, cursor, and inputcursor
C00016 00006	% paragraphs
C00018 00007	% underlining: under type bar boxit strut boxtop
C00020 00008	%% Old verbatim mode using \line
C00022 00009	% New verbatim mode \startcode and endcode
C00026 00010	% New Verbatim mode using $$\halign$$
C00029 00011	% Notes
C00030 00012	% chapter section
C00033 00013	% table of contents
C00035 00014	% Interesting Hacks: ifnull dnbrace upbrace
C00036 00015	% Documentation
C00037 ENDMK
C⊗;
% codes and definitions
\chcode '173←1
\chcode '176←2
\chcode  '44←3
\chcode  '26←4
\chcode  '45←5
\chcode  '43←6
\chcode '136←7
\chcode   '1←8		% These set the code for the special characters

\def \trace{\chpar0←}
\trace'01400345
\def \jpar{\chpar1←}
\def \ragged{\chpar8←}	% Shorthands for certain definitions

\def \lft #1{#1\hfill }
\def \ctr #1{\hfill #1\hfill }
\def \rt  #1{\hfill #1}
\def \top #1{#1\vfill }
\def \mid #1{\vfill #1\vfill }
\def \bot #1{\vfill #1}

\def\vjust{\vbox} % the 1978 names for these things
\def\hjust{\hbox} % the 1978 names for these things

\def \rjustline #1{\hbox to size{\hskip0pt plus1000cm minus1000cm #1}}
\def \ctrline   #1{\hbox to size{\hskip0pt plus1000cm minus1000cm #1\hskip0pt
	plus1000cm minus1000cm}}

\def \ldots{{.\≥.\≥.}}
\def \cdots{{\char '401\≥\char '401\≥\char '401}}
\def \ldotss{{.\≥.\≥.\≥}}
\def \cdotss{\cdots \≥}
\def \ldotsm{{\≥.\≥.\≥.\≥}}

\def \vdots{\vbox
{\baselineskip 4pt \vskip 6pt \hbox{.}\hbox{.}\hbox{.}}
}

\def \cpile #1{\vcenter {\halign {\hfill $## $\hfill \cr #1}}}
\def \lpile #1{\vcenter {\halign {$## $\hfill \cr #1}}}
\def \rpile #1{\vcenter {\halign {\hfill $## $\cr #1}}}

\def \null{\hbox {}}

\def \spose #1{\hbox to 0pt
	{\hskip 0pt minus 100pt #1 \hskip 0pt minus 10000000pt
	}}

\def\log{\mathop{\char'154\char'157\char'147}\limitswitch}
\def\lg{\mathop{\char'154\char'147}\limitswitch}
\def\ln{\mathop{\char'154\char'156}\limitswitch}
\def\max{\mathop{\char'155\char'141\char'170}}
\def\min{\mathop{\char'155\char'151\char'156}}
\def\gcd{\mathop{\char g\char c\char d}}

% Font definitions and related macros

\chcode'100←12	% allow @ on this page to be parsed correctly

% font definitions for 8, 9, and 10 point fonts and friends
\font @←cmathx
\font a←cmr10  \font b←cmr9   \font c←cmr8  \font d←cmr7  \font e←cmr6  \font f←cmr5
\font g←cmi10  \font h←cmi9   \font i←cmi8  \font j←cmi7  \font k←cmi6  \font l←cmi5
\font m←cmsc10
\font n←cms10  \font o←cms9   \font p←cms8
\font q←cmb10  \font r←cmb9   \font s←cmb8
\font t←cmtt   \font T←cmtt9  \font U←cmtt8
\font u←cmsy10 \font v←cmsy9  \font w←cmsy8 \font x←cmsy7 \font y←cmsy6 \font z←cmsy5

% font definitions for other size fonts
\font ;←cmtitl
\font <←cmssb  \font =←cmss12
\font A←ms25   \font B←nons
\font P←peni11

% font request macros
\let \curfont=\:
\def \usefont #1{\curfont #1\def\fontcode{#1}}
\let \:=\usefont

% font family definitions
\def \tenpoint
	{\baselineskip 12pt
	\dispskip 12pt plus 3pt minus 9pt
	\dispaskip 0pt plus 3pt
	\dispbskip 7pt plus 3pt minus 4pt
	\def \rm{\:a}
	\def \sl{\:n}
	\def \bf{\:q}
	\def \it{\:g}
	\def \tt{\:t}
	\def \sy{\:u}
	\def \sc{\:m}
	\def \biglp{\mathopen {\vcenter {\hbox {\:@\char '0}}}}
	\def \bigrp{\mathclose{\vcenter {\hbox {\:@\char '1}}}}
	\mathrm adf
	\mathit gjl
	\mathsy uxz
	\rm
	\usertenpoint
}
\def \usertenpoint{}

\def \ninepoint
	{\baselineskip 11pt
	\dispskip 11pt plus 3pt minus 8pt
	\dispaskip 0pt plus 3pt
	\dispbskip 6pt plus 3pt minus 3pt
	\def \rm{\:b}
	\def \sl{\:o}
	\def \bf{\:r}
	\def \it{\:h}
	\def \tt{\:T}
	\def \sy{\:v}
	\def \biglp{\mathopen {\hbox{\:a(}}}
	\def \bigrp{\mathclose{\hbox{\:a)}}}
	\mathrm bef
	\mathit hkl
	\mathsy vyz
	\rm
	\userninepoint
}
\def \userninepoint{}

\def \eightpoint 
	{\baselineskip 10pt
	\def \rm{\:c} 
	\def \sl{\:p} 
	\def \bf{\:s} 
	\def \it{\:i}
	\def \tt{\:U}
	\def \sy{\:w}
	\dispskip 5pt plus 3pt minus 2pt
	\dispaskip 0pt plus 3pt 
	\dispbskip 5pt plus 3pt minus 2pt
        \def \biglp{\mathopen {\hbox {\:a(}}}
	\def \bigrp{\mathclose{\hbox {\:a)}}}
	\mathrm cef 
	\mathit ikl 
	\mathsy wyz
	\rm
	\usereightpoint
}
\def \usereightpoint{}

\mathex @

% definitions of miscellaneous fonts
\def\ms{\:A}
\def\titl{\:;}
\def\ss{\:=}
\def\nons{\:B}
\def\peni11{\:P}

% definitions of large parentheses
\def \bigglp{\mathopen{\vcenter{\hbox{\:@\char'22}}}}
\def \biggrp{\mathclose{\vcenter{\hbox{\:@\char'23}}}}
\def \biggglp{\mathopen{\vcenter{\hbox{\:@\char'40}}}}
\def \bigggrp{\mathclose{\vcenter{\hbox{\:@\char'41}}}}

% definitions of glue
\def \qquad{\quad\quad}
\def \xskip{\hskip 7pt plus 3pt minus 4pt}
\def \yskip{\penalty-50\vskip 3pt plus 3pt minus 2pt}
\def \yyskip{\penalty-100\vskip 6pt plus 6pt minus 4pt}

% definitions of odd characters
\def \@{{\sy\char'174}}
\def \#{{\tt\char'43}}
\def \sharp{{\tt\char'43}}
\def \${{\tt\char'44}}
\def \%{{\char'45}}
\def \∧{{\tt{}∧}}
\def \\{{\char'134}}
\def \uparrow{$\up$}
\let \space=\  % for defining \  to be \hbox{\space} in \tt

% \output and footnotes

\varunit 0.7692in	% one real inch

\output{\baselineskip 0pt\lineskip0pt	% beginning of output routine, resets skips
	\gdef\footnotebar{\hrule width5pc\vskip 3pt}
	\if T\tpage		% the next is used when tpage is "T" (title pages)
		{\gdef\tpage{F} % reset tpage
		\vskip .7vu	% blank space in place of headlines
		\page\advcount0 by \count1}  % insert the page contents, no page #
	\else{\if T\index{\indexoutput}
	\else{\moveleft 10pt\vbox to .7vu{\hrule % horizontal rule at top of page
		\hbox to 388pt{\trule\ifeven0{\topmark}\else{\botmark}\trule}
		\hrule\vfill}	% horizontal rule under the headline
		\page\advcount0 by \count1}	% insert the page contents
	}}		% end output routine

\setcount 0 1
\setcount 1 1 % increment in a positive direction

\def\tpage{F}			% "global variables"
\def\index{F}
\def\trule{\vrule height 13.5pt depth 6.5pt}	% used at top of page
\def\titlepage{\gdef\tpage{T}}  % \titlepage sets tpage to T
\def\titlemark#1#2{\mark
	{\ifeven0{\hbox to .45 in{\tenpoint \rm\hfill\count0\hfill\trule}
		\hfill\ss#1\hfill}
	\else{\hfill\ss#2\hfill
		\hbox to .45 in{\tenpoint \rm\trule\hfill\count0\hfill}}}}

\def\normalhsize{\hsize 368pt}
\def\smallhsize{\hsize 330pt} % move right margin in 38 pts for indpar
\vsize 8.3vu \normalhsize \maxdepth 2pt \parindent 19pt
\parskip 0pt plus 1 pt \lineskip 1pt plus 0pt
\topskip 24pt plus 6pt minus 10pt  \botskip 15pt plus 3pt minus 9pt
\topbaseline 0pt


\def\footnote#1#2{#1\botinsert{\footnotebar
  \baselineskip10pt\hjust par size{\eightpoint\rm\unskip#1#2}}
  \gdef\footnotebar{}}
\def\footnotebar{\hrule width5pc\vskip 3pt} % original definition
\def\upstar{\lower 3pt \hbox{$↑{\hbox{*}}$}}
\def\dagger{\lower 2pt \hbox{$↑\dag$}}
\def\ddagger{\lower 2pt \hbox{$↑\ddag$}}

% if you want to change \vsize, you have to \eject the first page first
% macro, for return, esc, bs, control characters, cursor, and inputcursor

\def \return{\lower 3 pt \hbox{\ms J}}

\def \esc{\lower 3 pt \hbox{\nons
	\baselineskip 3 pt
	\lineskip -1 pt
	\vbox{	\hbox to 6 pt{\lft{e}}
		\hbox to 6 pt{\ctr{s}}
		\hbox to 6 pt{\rt {c}}
}}}

\def \bs{\lower 3 pt \hbox{\nons
	\baselineskip 5 pt
	\lineskip -1 pt
	\vbox{	\hbox{BACK}
		\hbox{SPACE}
}}}

\def \↑#1{{\tt{}CTRL/#1}}

\def\cursor{{\ms i}}
\def\inputcursor{{\ms g}}
% paragraphs

\def\textindent#1{\noindent
  \hbox to 19 pt{\hskip0pt plus 1000pt minus 1000pt #1 }\!}
\def\hang{\par\hangindent 19pt}
\def\indent40#1{\noindent
  \hbox to 40 pt{\hskip0pt plus 1000pt minus 1000pt #1 }\!}
\def\number#1{\levelone{#1}} % for upward-compatibility
\def\levelone#1{\par\hangindent 19pt\noindent
  \hbox to 19 pt{#1\hfill}\!}
\def\leveltwo#1{\par\hangindent 38pt\noindent
  \hbox to 38 pt{\hbox to 19pt{\hfill}#1\hfill}\!}
\def\levelthree#1{\par\hangindent 57pt\noindent
  \hbox to 57 pt{\hbox to 38pt{\hfill}#1\hfill}\!}
\def\nnumber#1{\par\hangindent 50pt\noindent
  \hbox to 50 pt{#1\hfill}\!}
\def\indpar#1{\par\smallhsize\leveltwo{}{#1}\par\normalhsize}

% underlining: under type bar boxit strut boxtop

\def\undertext #1{$\underline{\hbox{#1}}$}	% underline in horizontal mode
\def\under#1{\undertext{#1}}	% upward compatibility

\def\type #1>#2{\par\indpar{\tt #1\under{#2}}\par} % type a line (as in dialogue)
% the second argument is underlined, good for prompts

\def\ttype #1>#2{\par\noindent{\ninepoint\tt \unskip#1\under{#2}}\par} % type a line (as in dialogue)

\def\overtext #1{$\overline{\hbox{#1}}$}	% overline in horizontal mode
\def\bar #1{\overtext{#1}}	% upward compatibility

\def\boxit#1{\vbox{\hrule\hbox{\vrule\hskip3pt
	\vbox{\vskip3pt#1\vskip3pt}\hskip3pt\vrule}\hrule}}

\def\strut{\lower 3.5pt\vbox to 12pt{}}

\def\boxtop#1{\save9#1\lower 1ht9\box9}

%% Old verbatim mode using \line
%%
%\chcode '15=12 % 
%\def\verbatimmode{\chcode'15=12\chcode '40=13%
%\gdef\line##1
%{\par\penalty1000\noindent##1\line}\line}%
%\def\endverbatimmode{\chcode'15=5\chcode'40=10%
%\gdef\line{}}%
%\chcode'15=5 %
%\def\startcode{\par\parskip 0pt plus 0pt\penalty -1000\vskip 4pt plus 4pt\eightpoint\tt\verbatimmode}
%\def\startcodenoglue{\par\parskip 0pt plus 0pt\eightpoint\tt\verbatimmode}
%\def\endcode{\endverbatimmode\parskip 0pt plus 1pt\par\vskip 5pt plus 5pt\fontsize\rm\penalty -100}
%\def\endcodenoglue{\endverbatimmode\parskip 0pt plus 1pt\par\fontsize\rm\penalty 1000}
%%
%\def\startoutput{\par\penalty -1000\vskip 4pt{\tenpoint
%    $\down\qquad\down\qquad\down\qquad\down\qquad\down\qquad\down\qquad\down$\par}
%    \vskip 5pt}
%%
% New verbatim mode \startcode and endcode

% To use, code:
% \startcode
% statements
% \endcode
%
% The code is listed verbatim without any page breaks.
% To allow a page break, put \allowbreak on a line.  If there
% is no break, a blank line is generated.
%
% \startcode supplies 4 pt of glue
% \endcode supplies 5 pt of glue
% The code is printed in \ninepoint \tt mode
% To avoid glue, code \startcodenoglue or \endcodenoglue

% Note that \fontsize must be defined to be your normal size of type, such
% as \tenpoint

% Use of tabs in verbatim mode will give an error message.

% Define \<cr> to be \CR when enabled
\chcode'15←12\def\
{\CR}\chcode'15←5 %

% Define \<tab> to be \tab when enabled
\chcode'11←12\def\	{\tab}\chcode'11←10
% will cause an error message unless \tab is defined

\def\startcodenoglue{\par
\parskip 0pt
\ninepoint\tt
\chcode'11←13			% define tab to give an error
\chcode'15←13			% define <return> to generate \cr
\chcode'40←13			% define space to generate \<space> (a real space)
\def\ {\hbox{\space}}		% make space exactly one unshrinkable space
\def\CR{\par\penalty2000\noindent\hbox{\!}}}

\def\endcodenoglue{\par\penalty2000	% force glue to this page
\vskip-11pt
\chcode'11←10			% define tab to be a space
\chcode'15←5			% define <return> be a end of line
\chcode'40←10			% define space to be a space
\def\ {\space}			% make "\ " as normal
\fontsize
\parskip 0pt plus 1pt
}

\def\startcode{\par\penalty-4000\vskip 5pt plus 1pt minus 1pt\startcodenoglue}
\def\endcode{\endcodenoglue\penalty-4000\vskip 6pt plus 1pt minus 1pt}

\def\startoutput{\par\penalty-4000\vskip 5pt plus 1pt minus 1pt{\tenpoint
    $\down\qquad\down\qquad\down\qquad\down\qquad\down\qquad\down\qquad\down$\par}
    \vskip 6pt plus 1pt minus 1pt}

\def\allowbreak{\par\penalty 2000\vskip-11pt\penalty-8000\vskip 11pt plus 1pt\par}

\def\allowbreaknoglue{\par\penalty 2000\vskip-11pt\penalty-8000\par}

% New Verbatim mode using $$\halign$$

% To use, code the following:
% \verbatim{
% follow with code
% } terminates verbatim mode.
% Note that \verbatim stuff will not be broken across page boundaries.

% To allow a break, use \noalign{\penalty-2000}%
% or \breakhere%
% Note the absence of spaces in the above.
% Note that the % is necessary to avoid an extra line generated.

% Note that \fontsize must be defined to be your normal size of type, such
% as \tenpoint

% These macros rely upon the definitions of \<cr> and \<tab> on the previous page.
% Use of tabs in verbatim mode will give an error message.

\def\verbatim{\par		% temporary
\gdef\CR{\cr\noalign{\penalty 1000}}
\chcode'11←13			% define tab to give an error
\chcode'15←13			% define <return> to generate \cr
\chcode'40←13			% define space to generate \<space> (a real space)
\verbatimgenerate}

\def\verbatimgenerate#1{{\ninepoint\tt$$\halign to size{##\hfill\cr#1}$$}
\chcode'11←10			% define tab to be a space
\chcode'15←5			% define <return> be a end of line
\chcode'40←10			% define space to be a space
}

\def\breakhere{\noalign{\penalty -2000\vskip 11 pt}}

\def\threecol{\par
\gdef\CR{\cr\noalign{\penalty 1000}}
\chcode'11←13			% define tab to give an error
\chcode'15←13			% define <return> to generate \cr
\chcode'40←13			% define space to generate \<space> (a real space)
\threecolgenerate}

\def\threecolgenerate#1{{\ninepoint\tt\halign{##\hfill⊗##\hfill⊗##\hfill\cr#1}}%
\chcode'11←10			% define tab to be a space
\chcode'15←5			% define <return> be a end of line
\chcode'40←10			% define space to be a space
}

% Notes

% \sendnotes creates a list of entries which will be output when
% \putnotes is used.  This should be at the end of the manuscript.

\def \sendnotes#1{\save0\vbox{\unbox\box0\hbox par size{Page \count0. #1}}}

\def \putnotes{\specialbegin{Fixup Notations}\unbox0}

% chapter section

\def\chapterbegin#1{\par\titlemark{Chapter \count4}{\sectionname}
	\par\advcount 4 \setcount 5 0
	\vfill\eject
	\xdef\sectionnumber{\count4}
	\gdef\sectionname{#1}
	\par\titlemark{Chapter \count4}{#1}
	{\noindent \ss Chapter \count4{.}  #1}
	\par\posthdrskip}
\setcount 4 0

\def\sectionbegin#1{\par\titlemark{Section \sectionnumber}{\sectionname}
	\par\advcount 5 \setcount 6 0
	\sectionskip
	\xdef\sectionnumber{\count4{.}\count5}
	\gdef\sectionname{#1}
	\par\titlemark{Section \sectionnumber}{#1}
	{\noindent \tenpoint \bf $\bullet$\ Section \sectionnumber.\ \ #1}
	\par\posthdrskip}

\def\subsectionbegin#1{\par\titlemark{Section \sectionnumber}{\sectionname}
	\par\advcount 6 \setcount 7 0
	\sectionskip
	\xdef\sectionnumber{\count4{.}\count5{.}\count6}
	\gdef\sectionname{#1}
	\par\titlemark{Section \sectionnumber}{#1}
	{\noindent \tenpoint \bf $\bullet$\ Section \sectionnumber.\ \ #1}
	\par\posthdrskip}

\def\dimsectionbegin#1{\par\titlemark{Section \sectionnumber}{\sectionname}
	\par\advcount 7
	\sectionskip
	\xdef\sectionnumber{\count4{.}\count5{.}\count6{.}\count7}
	\gdef\sectionname{#1}
	\par\titlemark{Section \sectionnumber}{#1}
	{\noindent \tenpoint \bf $\bullet$\ Section \sectionnumber.\ \ #1}
	\par\posthdrskip}

\def\specialbegin#1{\par\titlemark{#1}{\sectionname}
	\par\vfill\eject
	\sectionskip
	\gdef\sectionnumber{#1}
	\gdef\sectionname{#1}
	\par\titlemark{#1}{#1}
	{\noindent \ss #1.}
	\par\posthdrskip}

\def\settitle#1{\par\titlemark{#1}{#1}
	\gdef\sectionnumber{#1}
	\gdef\sectionname{#1}
	}

\def \posthdrskip{\par\penalty 1000\vskip 5pt\penalty 1000}
\def \sectionskip{\par\penalty-200\vskip 24pt plus 12pt minus 6pt}

\def \sectionnumber{}
\def \sectionname{}

\def \hdr#1{\par\vskip 11pt\ctrline{\bf #1}\par\posthdrskip}

% table of contents

\def\begintofc{\setcount 4 0	% chapter 0
	\setcount 0 0		% initial page number for cover page
	\setcount 1 -1		% page number increment - roman numerals
	\specialbegin{Table of Contents}}


\def\chaptertofc#1#2.{
	\par\advcount 4 \setcount 5 0
	\hbox to size{\hbox to 30pt{\bf\count4.\hfill}{#1}
		\leaders\hrule\hfill\hbox to 20pt{\hfill#2}}}

\def\sectiontofc#1#2.{
	\par\advcount 5 \setcount 6 0
	\hbox to size{\hbox to 45pt{\bf\count4.\count5.\hfill}{#1}
		\leaders\hrule\hfill\hbox to 20pt{\hfill#2}}}

\def\subsectiontofc#1#2.{
	\par\advcount 6 \setcount 7 0
	\hbox to size{\hbox to 60pt{\bf\count4.\count5.\count6.\hfill}{#1}
		\leaders\hrule\hfill\hbox to 20pt{\hfill#2}}}

\def\dimsectiontofc#1#2.{
	\par\advcount 7
	\hbox to size{\hbox to 75pt{\bf\count4.\count5.\count6.\count7.\hfill}{#1}
		\leaders\hrule\hfill\hbox to 20pt{\hfill#2}}}

\def\endtofc{\par\vfill\eject	% put out this page before screwing up page #
	\setcount 4 0		% chapter 0 done
	\setcount 0 0		% initial page number
	\setcount 1 1		% increment direction
}

% Interesting Hacks: ifnull dnbrace upbrace

\def\ifnull#1#2@then#3@else#4{\if?#1{#3}\else{#4}}
% to use \ifnull #1?2@then{<true clause>}@else{<false clause>}

\def\bracex{\leaders\hrule height 1.5pt \hfill}
\def\dnbrace{$\char'772$\bracex$\char'775
	\char'774$\bracex$\char'773$}
\def\upbrace{$\char'774$\bracex$\char'773
	\char'772$\bracex$\char'775$}
% Documentation
%
% Counters and use
% 0	page number, if negative print value plus value in counter 1
% 1	page number increment, +1 or -1
% 2	unused
% 3	unused
% 4	chapter number
% 5	section number
% 6	subsection number
% 7	diminished section number
% 8	unused
% 9	unused
%
% Boxes
% 0	\sendnotes
% 9	\boxtop